#pragma once

#include "CogProcessors.h"

// ------------------------------------------------------------------------------------------

class CogCacheEvaluator : public CogEvaluator
{
public:
	double evaluate(CogProduction* pRule);
};

// ------------------------------------------------------------------------------------------

class CogTESizeEvaluator : public CogEvaluator
{
public:
	double evaluate(CogProduction* pRule);
};

// ------------------------------------------------------------------------------------------

class CogNTSizeEvaluator : public CogEvaluator
{
public:
	double evaluate(CogProduction* pRule);
};

// ------------------------------------------------------------------------------------------

class CogAgeEvaluator : public CogEvaluator
{
public:
	double evaluate(CogProduction* pRule);
};

// ------------------------------------------------------------------------------------------

class CogBinomialEvaluator : public CogArithmeticProcessor<double>
{
public:
	CogBinomialEvaluator(const string& parameters);
};

// ------------------------------------------------------------------------------------------

class CogQuarticEvaluator : public CogArithmeticProcessor<double>
{
public:
	CogQuarticEvaluator(const string& parameters);
};

// ------------------------------------------------------------------------------------------

class CogQuinticEvaluator : public CogArithmeticProcessor<double>
{
public:
	CogQuinticEvaluator(const string& parameters);
};

// ------------------------------------------------------------------------------------------

class Cog6thOrderEvaluator : public CogArithmeticProcessor<double>
{
public:
	Cog6thOrderEvaluator(const string& parameters);
};

// ------------------------------------------------------------------------------------------

class CogMultiplexerEvaluator : public CogLogicalProcessor
{
public:
	CogMultiplexerEvaluator(const string& parameters);
};

// ------------------------------------------------------------------------------------------

class CogParityEvaluator : public CogLogicalProcessor
{
public:
	CogParityEvaluator(const string& parameters);
};

// ------------------------------------------------------------------------------------------


